package org.monster.context.servlet;

import javax.servlet.http.HttpServlet;
import java.util.HashMap;
import java.util.Map;

/**
 * 服务者容器
 *
 * @author Monster
 */
public class ServletContainer {

    /**
     * 服务者
     */
    private static final Map<String, HttpServlet> SERVLETS = new HashMap<>(100);
    /**
     * 容器
     */
    private static ServletContainer container = null;

    /**
     * 构造方法
     */
    private ServletContainer() {
        super();
    }

    /**
     * 初始化 容器
     */
    public static synchronized void initContainer() {
        if (container == null) {
            container = new ServletContainer();
        }
    }

    /**
     * 获取 容器
     *
     * @return 容器
     */
    public synchronized static ServletContainer getContainer() {
        if (container == null) {
            initContainer();
        }
        return container;
    }

    /**
     * 添加 服务者
     *
     * @param servletName 服务者名
     * @param servlet     服务者
     */
    public void addServlet(String servletName, HttpServlet servlet) {
        SERVLETS.put(servletName, servlet);
    }

    /**
     * 获取 服务者
     *
     * @param servletName 服务者名
     * @return 服务者
     */
    public HttpServlet getServlet(String servletName) {
        return SERVLETS.get(servletName);
    }

    /**
     * 清楚 服务者
     */
    public void clearServlets() {
        SERVLETS.clear();
    }

    /**
     * 移除 服务者
     *
     * @param servletPath 服务者路径
     * @return 服务者
     */
    public HttpServlet removeServlet(String servletPath) {
        return SERVLETS.remove(servletPath);
    }

    /**
     * 大小
     *
     * @return 大小
     */
    public int size() {
        return SERVLETS.size();
    }

}
